package code;

import java.util.ArrayList;
import java.util.HashMap;

public class SyE {

	private HashMap<Jugador, Integer> puntajes;
	private HashMap<Jugador, Integer> dados;

	private String jugadorGanador = "";
	Tablero T;
	Dado D;
	private ArrayList<Jugador> J;

	public SyE(int n, int k, int d) {
		T = new Tablero(n);
		D = new Dado(d);

		puntajes = new HashMap<Jugador, Integer>();
		dados = new HashMap<Jugador, Integer>();

		J = new ArrayList<Jugador>();

		for (int i = 0; i < k; i++) {
			Jugador jug = new Jugador("Jugador " + (i + 1));
			J.add(jug);
			puntajes.put(jug, 0);
		}

	}

	public String ganador() {
		return jugadorGanador;
	}

	public void agregarSerpiente(int i, int j) {
		T.agregarSerpiente(i, j);

	}

	public void agregarEscalera(int i, int j) {
		T.agregarEscalera(i, j);
	}

	public void jugar() {
		int nuevaPosicion, dado;
		for (Jugador jug : J) {
			dado = D.tirarDados();
			nuevaPosicion = T.calcularPosicion(puntajes.get(jug) + dado);

			dados.put(jug, dado);
			
			if (nuevaPosicion >= T.getTam()) {
				nuevaPosicion = T.getTam();
				jugadorGanador = jug.getNombre();
				puntajes.put(jug, nuevaPosicion);
				return;
			} else
				puntajes.put(jug, nuevaPosicion);
		}

	}



	public String ver() {
		StringBuilder sb = new StringBuilder("");
		for (Jugador jug : J) {
			sb.append(jug.toString());
			sb.append("\nDado: ");
			sb.append(dados.get(jug));
			sb.append("\nPuntaje: ");
			sb.append(puntajes.get(jug));
			sb.append("\n\n");
		}
		sb.append("--------------------");
		return sb.toString();
	}

}
